Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=dp), | intent(in), | DIMENSION(:, :) | :: | A | ||
real(kind=dp), | intent(out), | DIMENSION(SIZE(A, 1), SIZE(A, 2)) | :: | L | ||
real(kind=dp), | intent(out), | DIMENSION(SIZE(A, 1), SIZE(A, 2)) | :: | D | ||
real(kind=dp), | intent(in) | :: | omega | |||
real(kind=dp), | intent(in) | :: | alpha |
SUBROUTINE Calculate_SSOR_preconditioner(A, L, D, omega, alpha) REAL(dp), DIMENSION(:, :), INTENT(IN) :: A REAL(dp), INTENT(IN) :: omega, alpha REAL(dp), DIMENSION(SIZE(A, 1), SIZE(A, 2)), INTENT(OUT) :: L, D INTEGER :: N, i N = SIZE(A, 1) L = 0.d0 D = 0.d0 DO i = 1, SIZE(A,1) L(i,i) = 1.d0/omega * A(i,i) L(i,1:i-1) = A(i,1:i-1) D(i,i) = A(i,i) END DO L = (alpha * omega)/(2-omega) * L END SUBROUTINE Calculate_SSOR_preconditioner